// pages/shoping/shoping.js
const app = getApp();


Page({

  /**
   * 页面的初始数据
   */
  data: {
    // items: [],               // 购物车列表
    hasList: false,          // 列表是否有数据
    totalPrice: 0,           // 总价，初始为0
    selectAllStatus: true ,  // 全选状态，默认全选
    sum:0,
    items: [

      { id: 1, title: '新鲜芹菜 ', weight:'3',image: '../../resource/images/shoping(1).png', num: 4, price: 0.01, selected: true },
      { id: 2, title: '素米', weight: '2', image: '../../resource/images/banner2@2x.png', num: 1, price: 0.03, selected: true }
    ],
    startX: 0, //开始坐标
    startY: 0,

    StatusBar: app.globalData.StatusBar, //模态动画
    CustomBar: app.globalData.CustomBar
  },
  //模态动画
  showModal(e) {
    this.setData({
      modalName: e.currentTarget.dataset.target
    })
  },
  hideModal(e) {
    this.setData({
      modalName: null
    })
  },
  // 计算总价
  getTotalPrice:function(){
    let items = this.data.items;                  // 获取购物车列表
    let total = 0;
    for (let i = 0; i < items.length; i++) {         // 循环列表得到每个数据
      if (items[i].selected) {                   // 判断选中才会计算价格
        total += items[i].num * items[i].price;     // 所有价格加起来
      }
    }
    this.setData({                                // 最后赋值到data中渲染到页面
      items: items,
      totalPrice: total.toFixed(2)
    });
  },
  // icon选择事件
  selectList(e) {
    var that = this;
    const index = e.currentTarget.dataset.index;    // 获取data- 传进来的index
    let items = this.data.items;                    // 获取购物车列表
    const selected = items[index].selected;         // 获取当前商品的选中状态
    var num = that.data.sum;
    if (selected){
      num = num-1;
    }else{
      num = num+1;
    }
    items[index].selected = !selected;              // 改变状态
    
    this.setData({
      sum:num,
      items: items
    });
    this.getTotalPrice();                           // 重新获取总价
  },
  // 增加数量
  addCount(e) {
    const index = e.currentTarget.dataset.index;
    let items = this.data.items;
    let num = items[index].num;
    num = num + 1;
    items[index].num = num;
    this.setData({
      items: items
    });
    this.getTotalPrice();
  },
  // 减少数量
  minusCount(e) {
    const index = e.currentTarget.dataset.index;
    let items = this.data.items;
    let num = items[index].num;
    if (num <= 1) {
      return false;
    }
    num = num - 1;
    items[index].num = num;
    this.setData({
      items: items
    });
    this.getTotalPrice();
  },
  // 全选事件
  selectAll(e) {
    let selectAllStatus = this.data.selectAllStatus;    // 是否全选状态
    selectAllStatus = !selectAllStatus;
    let items = this.data.items;

    for (let i = 0; i < items.length; i++) {
      items[i].selected = selectAllStatus;            // 改变所有商品状态
    }
    this.setData({
      selectAllStatus: selectAllStatus,
      items: items
    });
    this.getTotalPrice();                               // 重新获取总价
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;
    app.changeTabBar();
    wx.setNavigationBarTitle({
      title: '购物车'
    });
    that.getTotalPrice();
    var data = that.data.items;
    var price = 0;
    that.setData({
      sum:data.length,
      items: this.data.items
    })

  },
  //手指触摸动作开始 记录起点X坐标
  touchstart: function (e) {
    //开始触摸时 重置所有删除
    this.data.items.forEach(function (v, i) {
      if (v.isTouchMove)//只操作为true的
        v.isTouchMove = false;
    })
    this.setData({
      startX: e.changedTouches[0].clientX,
      startY: e.changedTouches[0].clientY,
      items: this.data.items
    })
  },
  //滑动事件处理
  touchmove: function (e) {
    var that = this,
      index = e.currentTarget.dataset.index,//当前索引
      startX = that.data.startX,//开始X坐标
      startY = that.data.startY,//开始Y坐标
      touchMoveX = e.changedTouches[0].clientX,//滑动变化坐标
      touchMoveY = e.changedTouches[0].clientY,//滑动变化坐标
      //获取滑动角度
      angle = that.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY });
    that.data.items.forEach(function (v, i) {
      v.isTouchMove = false
      //滑动超过30度角 return
      if (Math.abs(angle) > 30) return;
      if (i == index) {
        if (touchMoveX > startX) //右滑
          v.isTouchMove = false
        else //左滑
          v.isTouchMove = true
      }
    })
    //更新数据
    that.setData({
      items: that.data.items
    })
  },
  /**
   * 计算滑动角度
   * @param {Object} start 起点坐标
   * @param {Object} end 终点坐标
   */
  angle: function (start, end) {
    var _X = end.X - start.X,
      _Y = end.Y - start.Y
    //返回角度 /Math.atan()返回数字的反正切值
    return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
  },
  //删除事件
  del: function (e) {
    var that=this
    that.hideModal()
    this.data.items.splice(e.currentTarget.dataset.index, 1)
    this.setData({
      items: this.data.items
    })
    
  },

 

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // shoping_list 假数据
    // this.setData({
    //   hasList: true,        // 既然有数据了，那设为true吧
    //   items: [
    //     { id: 1, title: '新鲜芹菜 半斤', image: '../../resource/images/banner@2x.png', num: 4, price: 0.01, selected: true },
    //     { id: 2, title: '素米 500g', image: '../../resource/images/banner2@2x.png', num: 1, price: 0.03, selected: true }
    //   ]
    // });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})